package org.jeecg.modules.innerApi.zhiYunApi.service;

import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.innerApi.common.requestDto.*;
import org.jeecg.modules.innerApi.common.responseDto.*;
import org.jeecg.modules.innerApi.zhiYunApi.requestVo.ZyZnfmParam;
import org.jeecg.modules.innerApi.zhiYunApi.responseVo.ZyFwqxxNodeRtn;

import java.util.List;

/**
 * 新时代智云税控开票接口
 */
public interface IZhiyunSkfpService {
    /***
     * @jqbh 智能赋码
     */
    Result<List<ZnfmRtn>> znfm(String spmc);
    /***
     * 根据税控盘机器编号
     * 查询税控盘信息
     * @jqbh 机器编号
     */
    ZyFwqxxNodeRtn getFwqxx(GetFwqxxParam getFwqxxParam);
    /***
     * 根据税控设备、发票类型获取当前发票号、发票代码
     *
     * @params param
     */
    CurrentFphmRtn getCurrentFphm(CurrentFphmParam param);
    /***
     * 税控发票开具
     * 开具发票专票、普票、电子发票
     * @params 待开票报文
     */
    InvoiceRtn invoice(InvoiceParam param);
    /***
     * 红字信息表申请
     * @params
     */
    HzxxbsqRtn hzxxbsq(HzxxbsqParam param);
    /***
     * 发票作废
     * @params 作废发票信息
     */
    FpzfRtn fpzf(FpzfParam param);
    /***
     * 红字信息表撤销
     * @params
     */
    CommonRtn hzxxbcx(HzxxbcxParam param);
    /***
     * 红字信息表同步
     * @params
     */
    HzxxbtbRtn hzxxbtb(HzxxbtbParam param);
    /***
     * 红字信息表上传
     * @params
     */
    CommonRtn hzxxbsc(HzxxbcxParam param);
    /***
     * 红字信息表下载
     * @params
     */
    FileStreamRtn hzxxbxz(HzxxbxzParam param);

    /**
     * 生成电子发票板式文件
     * @param param
     * @return
     */
    CommonRtn createPdf(CreatePdfParam param);

    /**
     * 下载电子普票PDF
     * @param fplxdm
     * @param ids
     * @return
     */
    FileStreamRtn downloadPdf(String fplxdm, List<String> ids);

    /**
     * 下载电子普票OFD
     * @param fpdm
     * @param fphm
     * @param jqbh
     * @return
     */
    FileStreamRtn downloadOfd(String fpdm, String fphm,String jqbh);

    /**
     * 电子专票版式文件下载OFD/PDF
     * @param fpdm
     * @param fphm
     * @param downflag
     * @return
     */
    FileStreamRtn zpDownload(String fpdm, String fphm,String downflag);

    /**
     * 发票查询
     * @param param
     * @return
     */
    InvoiceQueryRtn invoiceQuery(InvoiceQueryParam param);
}
